.NETのクラスライブラリ設計 改訂新版
2021年
に発売された
.NET
の
クラスライブラリ
の
設計
に関する
書籍
.
第1章
よく設計された
フレームワーク
は単純である.
クライアントファーストプログラミング
ミーティング
の
コスト
を見積もることができる.
参加者の人数 x 参加者の平均時給 x 時間 ( x 頻度 )
設計
に不備がないと感じるのは,見落としをしていると考えるべき.
シナリオ駆動
で
API
を
設計
するべきである.
テスト駆動開発
のように,
ユースケース
から書いていく.
API仕様
は
機能仕様
より先に書く.
シナリオ
を10個くらい列挙し,それらの
シナリオ
を実装する
コードサンプル
を示すべきである.
API
を公開したことで,将来的に公開したい需要の高い
API
と衝突してしまうことがある.公開しない方がよい
API
がこの世に存在する.
複数の
プログラミング言語
をサポートする
API
は複数の言語で
コードサンプル
を示すべきである.
動的型付け言語
でも書く.
ユーザビリティスタディ
を行っていく.
早期に実施するのが最適.
2.2.2
参入障壁低減の原則
一般的な
シナリオ
で使用される
型
ほど浅い
名前空間
のところに置き,上級者向けのものほど深い
名前空間
にまとめてしまう.
StringBuilder
は
System名前空間
にあった方がよい.
コンストラクタ
に単純な
オーバーロード
を実装する.
プリミティブ型
で
引数
を受け付ける.
ユーザ
が複数の
インスタンス
を明示的に作成する必要があるようにはしない.
2.2.3 自己説明的な
オブジェクトモデル
の原則
単純な
シナリオ
では,
フレームワーク
は
ドキュメント
を必要とせずに使用可能でなければならない.
IntelliSense
向けに最適化する.
テクニカルライター
を早い段階で
設計
に参加させる.
2.2.3.4
一貫性
既存の
フレームワーク
と
一貫性
をたもった
設計
にする.
2.2.3.5
抽象
の制限
主流な
シナリオ
で使用される
API
では
抽象
が多くなることを避ける.
2.2.4
レイヤー
化された
アーキテクチャ
の原則
機能の豊富さや強力さを提供する低レベル
API
と,単純で便利な高レベル
API
に分解することができる.